﻿//************************************************************************
//        文件名称: 题目名称
//        文件描述: 灌装主密钥
//        版权所有: 版权所有(C)2009-2015
//        公    司: 
//        内容摘要: 序列化及反序列化
//        其他说明: 其它内容的说明
//        完成日期：2013/04/12
//        修改记录1: 修改历史记录，包括修改日期、修改者及修改内容

//       @author  Yongliang.Wang

//************************************************************************



using System;
using System.Collections.Generic;
using System.Text;
using fastJSON;
using System.Reflection;
using System.Data;

namespace ConfigMgrTest
{
    /// <summary>
    /// Framework.fastjosn.fastJOSN
    /// Provides two method toJOSN,ToObject
    /// </summary>
    public class FastJSON
    {
        /// <summary>
        /// 序列化
        /// </summary>
        /// <param name="obj">对象</param>
        /// <returns>json串</returns>
        public  string toJOSN(object obj)
        {   
           
            JSONParameters jsparam = new JSONParameters();
            jsparam.UseExtensions = false;
            return fastJSON.JSON.Instance.ToJSON(obj, jsparam);
        }

        /// <summary>
        /// 反序列化
        /// </summary>
        /// <param name="json">json串</param>
        /// <param name="obj">代转的对象</param>
        /// <returns>对象</returns>
        public static object ToObject(string json, object obj)
        {
             return fastJSON.JSON.Instance.ToObject(json,obj.GetType());
        }

        public static T ToObject<T>(string json)
        {

            return fastJSON.JSON.Instance.ToObject<T>(json);
        }
        /// <summary>
        /// DataTable转换为Json格式数据
        /// </summary>
        /// <param name="dt">需要转换的DataTable</param>
        /// <returns></returns>
        public string DataTableToJson(DataTable dt)
        {
            StringBuilder JsonString = new StringBuilder();
            //Exception Handling
            if (dt != null && dt.Rows.Count > 0)
            {
                JsonString.Append("{");
                JsonString.Append("total:" + dt.Rows.Count + ",rows:[");

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    JsonString.Append("{");
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        if (j < dt.Columns.Count - 1)
                        {
                            JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() +
                                  "\":" + "\"" +
                                  dt.Rows[i][j].ToString() + "\",");
                        }
                        else if (j == dt.Columns.Count - 1)
                        {
                            JsonString.Append("\"" +
                               dt.Columns[j].ColumnName.ToString() + "\":" +
                               "\"" + dt.Rows[i][j].ToString() + "\"");
                        }
                    }

                    /*end Of String*/
                    if (i == dt.Rows.Count - 1)
                    {
                        JsonString.Append("} ");
                    }
                    else
                    {
                        JsonString.Append("},");
                    }
                }

                JsonString.Append("]}");
                return JsonString.ToString();
            }
            else
            {
                return null;
            }
        }
    }
}
